package tablut;

import java.util.ArrayList;

public class Historique {
	public class ElementHistorique {
		Pion pionRef;
		Pion copie;
		
		ElementHistorique(Pion pionRef, Pion copie) {
			this.pionRef = pionRef;
			this.copie = copie;
		}
	}

	private ArrayList<ElementHistorique> listeElem;
	
	Historique() {
		listeElem = new ArrayList<ElementHistorique>();
	}
	
	// On garde un "historique" du pion en le clonant.
	public void ajouterElemHisto(Pion pionRef) {
		if(pionRef != null) {
			listeElem.add(new ElementHistorique(pionRef, pionRef.clone()));
		}
	}
	
	// On restaure tous les pions dans l'historique du coup.
	public void restaurerTout() {
		ElementHistorique tmpElem;
		
		for(int i = listeElem.size() - 1; i >=0; --i) {
			tmpElem = listeElem.get(i);
			
			// On recopie les champs nécessaires pour le rétablissement du pion
			tmpElem.pionRef.cas.p = null;
			tmpElem.pionRef.reprendreEtat(tmpElem.copie);
			tmpElem.pionRef.cas.p = tmpElem.pionRef;
		}
		
		listeElem.clear();
	}
}
